﻿/**
 * Стандартные сообщения валидации
 */
jQuery.extend(jQuery.validator.messages, {
	required     : "Это поле обязательно для заполения",
	remote       : "Please fix this field.",
	email        : "Некорректный E-mail",
	url          : "Некорректный электронный адрес",
	imageFormats : 'Данный формат не поддерживается',
	date         : "Пожалуйста, введите корректную дату",
	customDate   : "Пожалуйста, введите корректную дату",
	dateISO      : "Please enter a valid date (ISO).",
	number       : "Некорректный номер",
	digits       : "Поле должно содержать только цифры",
	creditcard   : "Please enter a valid credit card number.",
	equalTo      : "Пароли не совпадают",
	accept       : "Please enter a value with a valid extension.",
	maxlength    : jQuery.validator.format("Поле не может содержать более {0} символов"),
	minlength    : jQuery.validator.format("Поле не может содержать менее {0} символов"),
	rangelength  : jQuery.validator.format("Длина должна быть от {0} до {1} символов"),
	range        : jQuery.validator.format("Please enter a value between {0} and {1}."),
	max          : jQuery.validator.format("Please enter a value less than or equal to {0}."),
	min          : jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});


/**
 * скрипт содержащий правила валидации для форм
 */

/**
 * Общие инициализации
 */

// Валидация файлового поля для изображений
$.validator.addMethod("imageFormats", function (value, element) {
	return value.match(/(\.jpg|\.png|\.bmp|\.jpeg)/i);
});

// Валидация выпадающего списка
$.validator.addMethod("valueNotEquals", function (value, element, arg) {
	return arg != value;
});

// Валидация даты формата дд.мм.гггг
$.validator.addMethod("customDate", function (value, element) {
	return value.match(/^\d\d?\.\d\d?\.\d\d\d\d$/);
});

/**
 * Функция, инициализирующая валидатор формы регистрации
 */
window.InitRegisterValidation = function () {
	$("form#registerForm").validate({
		rules    : {
			UserName        : {
				required  : true,
				maxlength : 50
			},
			Email           : {
				required : true,
				email    : true
			},
			Password        : {
				required : true
			},
			ConfirmPassword : {
				required : true,
				equalTo  : "#Password"
			},
			Gender          : {
				valueNotEquals : "DontKnow"
			},
			Birthday        : {
				customDate : true
			}
		},
		messages : {
			Gender : {
				valueNotEquals : "Пожалуйста, выберите пол"
			}
		}
	});
};

/**
 * Функция, инициализирующая валидатор формы регистрации
 */
window.InitAuthorizationValidation = function () {
	$("#authorizationForm form").validate({
		rules    : {
			UserName : {
				required : true
			},
			Password : {
				required : true
			}
		},
		messages : {
			UserName : {
				required : 'Поле обязательно для заполнения'
			},
			Password : {
				required : 'Поле обязательно для заполнения'
			}
		}
	});
};

/**
 * Иницииализирует валидаторы формы загрузки визитки
 */
function InitUploadCardFormValidation() {
	$("#uploadCardForm").validate({
		rules    : {
			Title       : {
				required  : true,
				maxlength : 50
			},
			Description : {
				required  : true,
				maxlength : 255
			},
			cardImage   : {
				required     : true,
				imageFormats : true
			},
			Email       : {
				email : true
			}
		},
		messages : {
			cardImage : {
				required : 'Необходимо выбрать файл'
			}
		},
		invalidHandler : function () {
			setTimeout(function () {
				$('label[for="CardImage"].error').detach().appendTo('.fileContainer');
			}, 10);
		}
	});
}

/**
 * Иницииализирует валидаторы для формы загрузки
 */
function InitCreateAdsFormValidation(){
    $("#adsForm").validate({
        rules: {
            Title: {
                required : true,
                maxlength: 255
            },
            AdsContent: {
                required: true,
                maxlength: 4000,
                minlength: 25
            },
            Price: {
                number: true
            },
            Email: {
                required: true,
                email: true
            }
        },
        submitHandler: function(form,validator){
            var categoryId = $("#SelectedCategoryId").val();
            if (categoryId == "" | categoryId == "-1" | categoryId == 1){
                alert('Пожалуйста, выберите категорию в которой разместить объявление');
            }
            else {
                form.submit();
            }
        }
    });
}